{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "# Integración Numérica - Tercera parte\n", "**Curso Schwarz - Sosa - Suriano**\n", "- Métodos Numéricos. *Curso 2*\n", "- Análisis Numérico I. *Curso 4*\n", "- Métodos Matemáticos y Numéricos. *Curso 6*" ] }, { "cell_type": "markdown", "metadata": { "hideCode": true, "slideshow": { "slide_type": "slide" } }, "source": [ "## Cuadratura de Gauss-Legendre\n", "\n", "Este método propone una perspectiva totalmente distinta a la de los métodos de Newton-Cotes. En lugar de simplificar la elección de los $x_i$ tomando puntos equidistantes para obtener un sistema de ecuaciones lineales y obtener fácilmente los los $c_i$, *mantiene la totalidad de las incógnitas como tales con la finalidad de obtener una mejora en el orden del error*." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "\n", "Para generar el Sistema de Ecuaciones Lineales de $2.n+2$ incógnitas y $2.n+2$ incógnitas, propone primero cambiar la variable $x \\in [a,b]$ por $t \\in [-1,1]$:\n", "\n", "$$ \\int_a^b f(x) = \\frac{b-a}{2} \\int_{-1}^1 f\\left(\\frac{b-a}{2}t \n", "+ \\frac{a+b}{2}\\right)\\,dt$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Así las cosas, nuestra fórmula de cuadratura queda como:\n", "\n", "$$ Q_n = \\frac{b-a}{2} \\sum_{i=0}^n c_i . f\\left(\\frac{b-a}{2}t_i + \\frac{a+b}{2}\\right)$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Esta vez, al buscar las $2.n+2$ ecuaciones se aseguran resultados exactos al integrar polinomios de hasta grado $2.n+1$ *-lo cual implica además una mejora en el término de error de truncamiento.*" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "De la resolución del Sistema de Ecuaciones No Lineales para este nuevo intervalo normalizado surge que los $t_i$ coinciden con las raíces de los polinomios de Legendre, y los valores de los coeficientes $c_i$ se encuentran también relacionados con los mismos." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Aunque es posible calcular ambos valores en forma analítica, para aplicar el método se suele recurrir a los valores tabulados precalculados. De hecho, los tenemos disponibles en Numpy:" ] }, { "cell_type": "code", "execution_count": 455, "metadata": { "scrolled": false, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "tTabla, cTabla, pTabla, nTabla = [], [], [], []\n", "for i in range (1,8):\n", " x, c = np.polynomial.legendre.leggauss(i)\n", " ok = False\n", " for k in range (len(x)):\n", " tTabla.append(x[k])\n", " cTabla.append(c[k])\n", " if (not ok):\n", " nTabla.append(i-1)\n", " pTabla.append(str(i)+' Puntos')\n", " ok = True\n", " else:\n", " pTabla.append('')\n", " nTabla.append('')\n", "\n", "df = pd.DataFrame(data = {'$n$': nTabla, '$t_i$': tTabla, '$c_i$': cTabla}, index= pTabla) " ] }, { "cell_type": "code", "execution_count": 457, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", " | $n$ | \n", "$t_i$ | \n", "$c_i$ | \n", "
---|---|---|---|
1 Puntos | \n", "0 | \n", "0.000000 | \n", "2.000000 | \n", "
2 Puntos | \n", "1 | \n", "-0.577350 | \n", "1.000000 | \n", "
\n", " | \n", " | 0.577350 | \n", "1.000000 | \n", "
3 Puntos | \n", "2 | \n", "-0.774597 | \n", "0.555556 | \n", "
\n", " | \n", " | 0.000000 | \n", "0.888889 | \n", "
\n", " | \n", " | 0.774597 | \n", "0.555556 | \n", "
4 Puntos | \n", "3 | \n", "-0.861136 | \n", "0.347855 | \n", "
\n", " | \n", " | -0.339981 | \n", "0.652145 | \n", "
\n", " | \n", " | 0.339981 | \n", "0.652145 | \n", "
\n", " | \n", " | 0.861136 | \n", "0.347855 | \n", "
5 Puntos | \n", "4 | \n", "-0.906180 | \n", "0.236927 | \n", "
\n", " | \n", " | -0.538469 | \n", "0.478629 | \n", "
\n", " | \n", " | 0.000000 | \n", "0.568889 | \n", "
\n", " | \n", " | 0.538469 | \n", "0.478629 | \n", "
\n", " | \n", " | 0.906180 | \n", "0.236927 | \n", "
6 Puntos | \n", "5 | \n", "-0.932470 | \n", "0.171324 | \n", "
\n", " | \n", " | -0.661209 | \n", "0.360762 | \n", "
\n", " | \n", " | -0.238619 | \n", "0.467914 | \n", "
\n", " | \n", " | 0.238619 | \n", "0.467914 | \n", "
\n", " | \n", " | 0.661209 | \n", "0.360762 | \n", "
\n", " | \n", " | 0.932470 | \n", "0.171324 | \n", "
7 Puntos | \n", "6 | \n", "-0.949108 | \n", "0.129485 | \n", "
\n", " | \n", " | -0.741531 | \n", "0.279705 | \n", "
\n", " | \n", " | -0.405845 | \n", "0.381830 | \n", "
\n", " | \n", " | 0.000000 | \n", "0.417959 | \n", "
\n", " | \n", " | 0.405845 | \n", "0.381830 | \n", "
\n", " | \n", " | 0.741531 | \n", "0.279705 | \n", "
\n", " | \n", " | 0.949108 | \n", "0.129485 | \n", "